/**
 * 凯撒密码 rot13
 * @param str
 * @returns {*}
 * String.charCodeAt()
 * String.fromCharCode()
 */

/*
  26个字母的unicode码在65(A)与90(Z)之间,第13位M(77);
  将str通过.charCodeAt()转为unicode编码并放入新数组;
  后13位字母减去13后放入；
  其中非字母形式的字符直接放入.charAt();
  前13位字母加上13后放入；
  通过.fromCharCode()转化为字母，将数组转化为字符串；
*/

function rot13(str) {
    var newarr=[];
    for(var i=0;i<str.length;i++){
        if(str.charCodeAt(i)<65||str.charCodeAt(i)>90){
            newarr.push(str.charAt(i));
        }else if(str.charCodeAt(i)>77){
            newarr.push(String.fromCharCode(str.charCodeAt(i)-13));
        }else{
            newarr.push(String.fromCharCode(str.charCodeAt(i)+13));
        }
    }
    return newarr.join("");
}

console.log(rot13("SERR PBQR PNZC"));
